sr=44100
kr=4410

    instr 1 ; gives information about your joystick in real time
  kmask     linuxjoystick   0, 1
  kidx      =  2
  kaxes     tab       0, 1 ; number of axes has been stored in position 0
  kbuttons  tab       1, 1 ; number of buttons has been stored in position 1
            printf   "%d axes, %d buttons\\n", kidx, kaxes, kbuttons
  kuniq     init      0
reportaxis: ; first we see if we have any x/y input
  kcheck    =  kmask & (1<<kidx)
if kcheck == 0 kgoto nexta
  kres      tab       kidx, 1
  kuniq     =  kuniq + 1 ; to be sure to make the printf print
            printf    "axis %d value %6d\\n", kuniq, kidx-2, kres
nexta:
  kidx      =  kidx+1
if kidx < (kaxes+2) kgoto reportaxis

reportbutton: ; now we check for any buttons pressed
  kcheck    =  kmask & 1<<kidx
if kcheck == 0 kgoto nextb
  kres      tab       kidx, 1 ; a button has been pressed, get from table
            printf    "button %d push\\n", kidx*kres, (kidx-(kaxes+2))
            printf    "button %d release\\n", kidx*(1-kres), (kidx-(kaxes+2))
nextb:
  kidx      =  kidx+1
if kidx < (kaxes+kbuttons+2) kgoto reportbutton
    endin

